home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / share / pyshared / gst-0.10 / gst / extend / utils.py < prev   
Encoding:
Python Source  |  2009-02-21  |  2.4 KB  |  78 lines

  1. import os
  2.  
  3. import gobject
  4. import gst
  5.  
  6. def gst_dump(bin):
  7.     dump_element(bin, 0)
  8.  
  9. def dump_bin(bin, indent):
  10.         # Iterate the children
  11.         for child in bin.get_list():
  12.             dump_element(child, indent + 2)
  13.  
  14. def dump_element(element, indent):
  15.         states = { 1: 'NULL', 2: 'READY',
  16.             4: 'PAUSED', 8: 'PLAYING' }
  17.  
  18.         state = 'UNKNOWN'
  19.         try:
  20.             state = states[element.get_state()]
  21.         except KeyError:
  22.             state = 'UNKNOWN (%d)' % element.get_state()
  23.  
  24.         c = element.get_clock()
  25.         if c is None:
  26.             clock_str = "clock - None"
  27.         else:
  28.             clock_str = "clock - %s" % (c.get_name())
  29.  
  30.         out = "%s (%s): state %s, %s" % (element.get_name(),
  31.              gobject.type_name(element.__gtype__), state, clock_str)
  32.  
  33.         print out.rjust(len(out) + indent)
  34.  
  35.         tmp = { True: 'active', False: 'inactive' }
  36.  
  37.         for curpad in element.get_pad_list():
  38.             if curpad.get_direction() == gst.PAD_SRC:
  39.                 if curpad.is_linked():
  40.                     peer = curpad.get_peer()
  41.                     out = " - %s:%s (%s) => %s:%s (%s)" % (
  42.                         curpad.get_parent().get_name(), curpad.get_name(),
  43.                         tmp[curpad.is_active()],
  44.                         peer.get_parent().get_name(), peer.get_name(),
  45.                         tmp[peer.is_active()])
  46.  
  47.                     print out.rjust(len(out) + indent)
  48.  
  49.         if isinstance(element, gst.Bin):
  50.             dump_bin(element, indent + 2)
  51.         elif isinstance(element, gst.Queue):
  52.             out = " - time_level: %ld" % (
  53.                 element.get_property('current-level-time'))
  54.             print out.rjust(len(out) + indent)
  55.             out = " - bytes_level: %ld" % (
  56.                 element.get_property('current-level-bytes'))
  57.             print out.rjust(len(out) + indent)
  58.  
  59. def gc_collect(reason=None):
  60.     """
  61.     Garbage-collect if GST_GC env var is set.
  62.     This helps in debugging object refcounting.
  63.     Sprinkle liberally around checkpoints.
  64.     """
  65.     env = os.environ.get('GST_GC', None)
  66.     if not env:
  67.         return
  68.     import gc
  69.     if env == 'DEBUG_LEAK':
  70.         gc.set_debug(gc.DEBUG_LEAK)
  71.  
  72.     gst.debug('collecting garbage')
  73.     if reason:
  74.         gst.debug('because of %s' % reason)
  75.     count = gc.collect()
  76.     gst.debug('collected garbage, %d objects collected, %d left' % (
  77.         count, len(gc.get_objects())))
  78.